package zhh.tangbao.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import zhh.tangbao.user.dto.ModuleQueryDto;
import zhh.tangbao.user.dto.role.RoleOperateUpdateDto;
import zhh.tangbao.user.dto.role.RoleQueryDto;
import zhh.tangbao.user.entity.AuthorityOperate;
import zhh.tangbao.user.entity.Role;
import zhh.tangbao.user.vo.*;

import java.util.List;
import java.util.Set;

/**
 * @author 粥灰灰
 * @created 2022/10/5
 * @version 1.0
 * @Description 描述
 */


public interface RoleService {

    /**
     * 添加角色
     * @param role
     * @return 返回角色主键
     */
    int addRole(Role role);

    /**
     * 删除角色
     * @return
     */
    int deleteRole(Long id);

    int updateRole(Role role);

    Role findById(String id);

    /**
     * 获取该角色权限
     * @param roleId
     * @return
     */
    Set<String> getRoleAuthority(Long roleId);


    String getDefaultRoleId(String roleType);

    int updateDefaultRoleId(String roleType, Long newRoleId);

    /**
     * 获取所有角色类型
     * @return
     */
    List<RoleTypeVo> getRoleType();

    List<AuthorityOperate> getRoleOperate(String module, boolean openAllFunction);

    List<ModuleOptionVo> getModuleOption(ModuleQueryDto dto);

    ModuleInfoVo getModuleOperates(String moduleCode);

    Page<Role> page(RoleQueryDto dto);

    int batchDelete(List<String> ids);

    List<OperateTreeNodeVo> getRoleOperateTree(String roleId);

    List<String> getRoleAlreadyHadOperateTree(String roleId);

    List<OperateTreeNodeVo> getOperateTree();

    int updateRoleOperate(RoleOperateUpdateDto dto);

}
